#include "widget.h"
#include "ui_widget.h"

#include <QApplication>
#include <QMessageBox>
#include <QTimer>
#include <QProcess>
#include <QLineEdit>
#include <QDir>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->imageLabel->setVisible(false);
    setWindowTitle("小猪崽认证");
}

Widget::~Widget()
{
    delete ui;
}



void Widget::on_pushButton_2_clicked()
{
    QMessageBox *box = new QMessageBox(this);
    box->setText("你已经遗忘了你是一头小猪崽\n请点击开始测试唤醒记忆");
    box->setStandardButtons(QMessageBox::NoButton);  // 不显示按钮

    // 创建一个定时器，10秒后关闭消息框
    QTimer *timer = new QTimer(box);
    timer->setSingleShot(true);
    connect(timer, &QTimer::timeout, box, &QMessageBox::accept);  // 超时后自动关闭消息框
    timer->start(5000);  // 10秒 (10000 毫秒)

    // 显示消息框
    box->exec();
}


void Widget::on_pushButton_clicked()
{
    bool correctInput = false;
    static uint8_t cnt = 0;
    // 持续要求输入直到正确或定时器到期
    while (!correctInput ) {
        bool ok;
        cnt++;
        if(cnt==2)
        {
            QMessageBox::information(this, "加油", "我知道你遗忘了，请继续努力");

            ui->imageLabel->setPixmap(QPixmap("./mouse.jpg"));  // 设置图片路径
            ui->imageLabel->setScaledContents(true);  // 图片缩放适应窗口
            ui->imageLabel->resize(400, 400);  // 设置窗口大小

            ui->imageLabel->setVisible(true);



            // 延时8秒后进入下一次输入循环
            QTimer::singleShot(8000, this, []() {
            });
        }

        if(cnt==4)
        {
            QMessageBox::information(this, "怎么回事", "小老弟，你是不是吃到老鼠药了");
        }
        QString input = QInputDialog::getText(this, "认证", "请输入：我是小猪崽",
                                              QLineEdit::Normal, "", &ok);

        if (ok && (input == "我是小猪崽")) {
            QMessageBox::information(this, "认证成功", "恭喜！你已经想起了自己是小猪崽，可以退出程序了。");
            QProcess::execute("shutdown -a");


            ui->imageLabel->setWindowTitle("认证成功！");
            ui->imageLabel->setPixmap(QPixmap("./pig.jpg"));  // 设置图片路径
            ui->imageLabel->setScaledContents(true);  // 图片缩放适应窗口
            ui->imageLabel->resize(400, 400);  // 设置窗口大小

            ui->imageLabel->setVisible(true);

            correctInput = true;

            // 设置 1 分钟后关闭应用程序的定时器
            QTimer *closeTimer = new QTimer(this);
            closeTimer->setSingleShot(true);
            connect(closeTimer, &QTimer::timeout, qApp, &QApplication::quit);  // 超时后关闭程序
            closeTimer->start(10000);

        } else {
            QMessageBox::warning(this, "认证失败", "输入错误！惩罚开始。倒计时5分钟强制关机。");
            QProcess::execute("shutdown -s -t 300");
        }
    }
}

